#!groovy linux下jenkins配置，存在jenkins访问jdk，maven等权限问题，所以配置jdk以及maven全局工具的时候，jdk使用默认的，maven使用自动安装，没有使用docker-compose
#!启动项目,使用docker命令启动项目
node {
    stage('获取代码') {
        echo "start fetch code from git:https://gitee.com/lesserPanda/lspand-elasticsearch-server.git"
        //清空当前目录
        deleteDir()
        //git有账号密码的情况下，需要账号密码访问，拉去代码
        //git credentialsId: 'f7c6d044-d268-4f77-8e70-fa6bfcba3625', url: "https://gitee.com/lesserPanda/lspand-elasticsearch-server.git"
        // git需要账号密码的情况下，拉去代码
        git "https://gitee.com/lesserPanda/lspand-elasticsearch-server.git"
    }

    stage('代码静态检查-待完成') {
        //伪代码检查
        echo "start code check"
    }

    // 定义jdk环境
    def jdkHome = tool 'jdk'
    env.PATH = "${jdkHome}/bin:${env.PATH}"

    //定义mvn环境
    def mvnHome = tool 'M3'
    env.PATH = "${mvnHome}/bin:${env.PATH}"

    stage('编译+单元测试+打包image') {
        echo "start compile"
        //切换目录
        dir('../knife-elasticsearch-service') {
            sh "java -version"
            sh "mvn -version"
            //重新打包
            sh 'mvn clean package install -U -Dmaven.test.skip=true'
            //build镜像，mvn命令打包镜像
            sh 'mvn dockerfile:build'
        }
    }

    stage('镜像推送image仓库') {
        echo "start build image"
        // 打包镜像并推送镜像仓库
        dir('../knife-elasticsearch-service') {
            //登录镜像仓库,如果需要推送镜像到镜像仓库，将下面注释取消
            // sh 'docker login -u manbanpai -p kaiji123...'
            //推送镜像到镜像仓库，如果需要，将下面注释取消
            //sh 'docker push manbanpai/lspand-elasticsearch-server:0.0.1-SNAPSHOT'
        }
    }

    // 重启服务
    stage('启动服务') {
        echo "start lspand-elasticsearch-server"
        // 重启服务
        sh 'docker run -d --name lspand-elasticsearch-server-0.0.1-SNAPSHOT --network host -v lspand-elasticsearch-server-0.0.1-SNAPSHOT-logs:/logs -e SPRING_PROFILES_ACTIVE=dev manbanpai/lspand-elasticsearch-server:0.0.1-SNAPSHOT'
    }
}